﻿package com.rbac.system.service;

import com.rbac.system.common.RequireDataPermission;

/**
 * 数据权限服务接口
 */
public interface DataPermissionService {
    
    /**
     * 检查用户是否有权限访问指定资源
     * 
     * @param userId 用户ID
     * @param resourceType 资源类型
     * @param resourceId 资源ID
     * @param permissionType 权限类型
     * @return 是否有权限
     */
    boolean hasDataPermission(Long userId, String resourceType, Long resourceId, 
                             RequireDataPermission.DataPermissionType permissionType);
    
    /**
     * 检查用户是否有权限访问指定用户的数据
     * 
     * @param currentUserId 当前用户ID
     * @param targetUserId 目标用户ID
     * @param permissionType 权限类型
     * @return 是否有权限
     */
    boolean hasUserDataPermission(Long currentUserId, Long targetUserId, 
                                 RequireDataPermission.DataPermissionType permissionType);
    
    /**
     * 获取用户的数据权限范围SQL条件
     * 
     * @param userId 用户ID
     * @param resourceType 资源类型
     * @param permissionType 权限类型
     * @return SQL条件字符串
     */
    String getDataPermissionSql(Long userId, String resourceType, 
                               RequireDataPermission.DataPermissionType permissionType);
}


